one-off dynoを起動するzxスクリプト
code: heroku-test.mjs
const herokuAppName = "(app名)";
const herokuAPIKey = "(APIキー)";
$.verbose = false;
const invokeHerokuAPI = async (path, init = {}) => {
const response = await fetch(
https://api.heroku.com/apps/${herokuAppName}/${path},
{
...init,
headers: {
...init.headers,
Accept: "application/vnd.heroku+json; version=3",
Authorization: Bearer ${herokuAPIKey},
"Content-Type": "application/json",
},
}
);
return response.json();
};
// one-off dynoを起動する。
console.log(await invokeHerokuAPI('dynos', {
method: "POST",
body: JSON.stringify({
// 30秒間何もしないコマンド
command: "sleep 30",
size: "Hobby",
type: "run",
time_to_live: 60,
}),
}));
// 現在起動しているdynoの情報を表示する。
console.log(await invokeHerokuAPI('dynos'));
code: bash
$ zx heroku-test.mjs
// one-off dynoの起動に成功したレスポンス
{
attach_url: null,
command: 'sleep 30',
created_at: '2022-04-18T09:09:44Z',
id: '72b7b97f-cfa3-4625-9c05-470d26265041',
name: 'run.1241',
app: { id: 'd420d296-6816-4929-8109-e0de149ae700', name: 'hata6502-test' },
release: { id: '93a05d0d-e8e9-4e94-b54a-f1ff8f53a127', version: 2 },
size: 'Free',
// 起動中のステータス
state: 'starting',
type: 'run',
updated_at: '2022-04-18T09:09:44Z'
}
// 現在起動しているdynoの情報のレスポンス
[
{
attach_url: null,
command: 'sleep 30',
created_at: '2022-04-18T09:09:45Z',
id: '72b7b97f-cfa3-4625-9c05-470d26265041',
name: 'run.1241',
app: {
id: 'd420d296-6816-4929-8109-e0de149ae700',
name: 'hata6502-test'
},
release: { id: '93a05d0d-e8e9-4e94-b54a-f1ff8f53a127', version: 2 },
size: 'Free',
// 実行中のステータス
state: 'up',
type: 'run',
updated_at: '2022-04-18T09:09:45Z'
}
]